module controller(
    input  wire [31:0] instr,
    output wire        regwrite,   // 是否写回寄存器堆（给 WB）
    output wire        alusrc,     // ALU 的 B 源选择：1=imm（I 型）
    output wire [3:0]  alu_ctrl    // ALU 功能码：0000=ADD
);
    wire [6:0] opcode = instr[6:0];
    wire [2:0] funct3 = instr[14:12];

    wire is_addi = (opcode == 7'b0010011) && (funct3 == 3'b000);

    assign regwrite = is_addi;
    assign alusrc   = is_addi;     // ADDI 用立即数
    assign alu_ctrl = 4'b0000;     // 加法
endmodule
